home *** CD-ROM | disk | FTP | other *** search
-
- //////////////////////////////////////////////////////////////////////////////
- // CProxy_PolyEvents
- template <class T>
- class CProxy_PolyEvents : public IConnectionPointImpl<T, &DIID__PolyEvents, CComDynamicUnkArray>
- {
- public:
- //methods:
- //_PolyEvents : IDispatch
- public:
- void ClickIn(
- long x,
- long y)
- {
- VARIANTARG* pvars = new VARIANTARG[2];
- for (int i = 0; i < 2; i++)
- VariantInit(&pvars[i]);
- T* pT = (T*)this;
- pT->Lock();
- IUnknown** pp = m_vec.begin();
- while (pp < m_vec.end())
- {
- if (*pp != NULL)
- {
- pvars[1].vt = VT_I4;
- pvars[1].lVal= x;
- pvars[0].vt = VT_I4;
- pvars[0].lVal= y;
- DISPPARAMS disp = { pvars, NULL, 2, 0 };
- IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
- pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
- }
- pp++;
- }
- pT->Unlock();
- delete[] pvars;
- }
- void ClickOut(
- long x,
- long y)
- {
- VARIANTARG* pvars = new VARIANTARG[2];
- for (int i = 0; i < 2; i++)
- VariantInit(&pvars[i]);
- T* pT = (T*)this;
- pT->Lock();
- IUnknown** pp = m_vec.begin();
- while (pp < m_vec.end())
- {
- if (*pp != NULL)
- {
- pvars[1].vt = VT_I4;
- pvars[1].lVal= x;
- pvars[0].vt = VT_I4;
- pvars[0].lVal= y;
- DISPPARAMS disp = { pvars, NULL, 2, 0 };
- IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
- pDispatch->Invoke(0x2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
- }
- pp++;
- }
- pT->Unlock();
- delete[] pvars;
- }
-
- };
-
-